1 package com.iluwatar;
2
3 import java.util.List;
4
5 public class TreasureChestItemIterator implements ItemIterator {
6
7 private TreasureChest chest;
8 private int idx;
9 private ItemType type;
10
11 public TreasureChestItemIterator(TreasureChest chest, ItemType type) {
12 this.chest = chest;
13 this.type = type;
14 this.idx = -1;
15 }
16
17 @Override
18 public boolean hasNext() {
19 return findNextIdx() != -1;
20 }
21
22 @Override
23 public Item next() {
24 idx = findNextIdx();
25 if (idx != -1) {
26 return chest.getItems().get(idx);
27 }
28 return null;
29 }
30
31 private int findNextIdx() {
32
33 List<Item> items = chest.getItems();
34 boolean found = false;
35 int tempIdx = idx;
36 while (!found) {
37 tempIdx++;
38 if (tempIdx >= items.size()) {
39 tempIdx = -1;
40 break;
41 }
42 if (type.equals(ItemType.ANY)
43 || items.get(tempIdx).getType().equals(type)) {
44 break;
45 }
46 }
47 return tempIdx;
48 }
49 }